Gitとは、分散型バージョン管理システムの一つで、もともとLinuxのソースコードを効果的に管理するために開発されました。
Gitでは、ファイルの状態を好きなときに更新履歴として保存しておくことができます。そのため、一度編集したファイルを過去の状態に戻したり、編集箇所の差分を表示したりすることができます。
また、古いファイルを元に編集したファイルで、他人の編集した最新ファイルを上書きしようとすると、サーバにアップロードした時に警告が出ます。そのため、知らず知らずのうちに他人の編集内容を上書きしてしまうといった失敗は起こりません。
Gitを使用するために理解しておくべき基本的な用語について説明します。
【 リポジトリ 】
「ファイル/ディレクトリの状態を記録するもの」です。変更内容は変更履歴として保存されていきます。
変更履歴管理対象ディレクトリをリポジトリの管理下に配置すると、対象ディレクトリ内のファイル/ディレクトリの変更履歴を記録できます。
● リモートリポジトリ
専用サーバに配置される共有リポジトリです。マスターリポジトリとして複数人で共有します。
● ローカルリポジトリ
自分のローカルPCに作成する個人用リポジトリです。
「リモートリポジトリをコピーして作成」「新規作成」の2種類の作成方法があります。
「リモートリポジトリのコピー作成」のことを、「クローン作成」と呼びます。
【 ワークツリー 】
「ローカルPC内のGit管理下にある作業用ディレクトリ」のことです。
ユーザは、このディレクトリの中にあるファイルを編集します。
【 コミット 】
「編集したファイルの変更内容をローカルリポジトリに記録する」作業のことです。
コミットの際は、「コミットメッセージ」(コメント)の入力が必須です。
【 インデックス 】
「コミットされるファイルを登録しておくもの」です。概念的に、ローカルリポジトリとワークツリーの間にあります。
インデックスに登録してあるファイルのみコミットされます。
【 プッシュ(Push) 】
「ローカルリポジトリの内容をリモートリポジトリにアップロードする」ことです。
【 プル(Pull) 】
「リモートリポジトリの最新の状態をローカルリポジトリに取り込む」ことです。
他の編集者により、リモートリポジトリは更新されていきます。それらの更新情報をダウンロードして、ローカルリポジトリを最新の状態に更新します。
【 マージ 】
「1ファイルに対する複数の変更内容を統合する」作業です。
ファイル(A)をPullして、編集後、Pushした時に、すでに他の編集者がファイル(A)に対してPushしていた場合、マージ作業が必要です。
Gitが自動的に統合してくれます。自動的に統合できなかった場合は、手動での統合作業が必要です。
ローカルPCにGitをインストールした後の基本的な使い方(流れ)について説明します。
git clone, git tag -l, git checkout
gzip, gunzip, bzip2, xz, tar, unzip
パッチ(patch)とは、ファイルを部分的に修正・更新するために用いられる追加分のデータ(差分ファイル)のことです。
古いファイルと差分ファイルを基に、新しいファイルを作成します。差分ファイルは「diff」コマンドを使って作成します。
差分ファイルを“パッチファイル”、差分を適用することを“パッチを当てる”と言います。
patch [オプション] 元のファイル 差分ファイル または、 patch < 差分ファイル |
|
オプションを省略してコマンドを実行するとパッチファイルの形式を自動判別します。オプション -c(context形式)、-e(edスクリプト形式)、-n(RCS形式)、-u(unified形式)を指定した場合、自動判別を行いません。
# diff -u file_old file_new > sabun_fail.patch |
オプションの「-u」はパッチファイルを、unified diff形式で出力するという指定です。
「-c」の場合はcontext diff形式での出力になります。
# patch -u file_old < sabun_fail.patch |
オプションの「-u」はパッチファイルを、unified diff形式のパッチを適用するという意味になります。(diffと同様に「-c」の場合はcontext diff形式での適用となります。)
「適用するファイル名」については省略することが出来ます。省略した場合はパッチファイルの先頭の行「--- ファイル名」のファイルにパッチが適用されます。
間違ってパッチを適用してしまった場合など、patchコマンドにオプション「-R」を指定することでパッチ適用を戻す(リバースパッチ)ことが出来ます。
# patch -u -R file_old < sabun_fail.patch |
ソースコードからアプリケーションをインストールするときには、ソースコードをコンパイルする必要があり、必ずconfigure、make、make installの順で実行します。
configureはコマンドではなく、スクリプトファイルです。configureは、ファイルに書かれているスクリプトを実行します。
ソースコード中にこのconfigureスクリプトファイルが含まれているので、configureファイルのあるディレクトリで実行します。
configureを実行することで、インストールに必要な環境変数やライブラリが正しく設定、設置されているか等がチェックされます。チェックした結果、MakeFileが作られます。
アプリケーションをインストールする環境はそれぞれ違うため、単一のMakeFileを準備するだけだと、環境の差異に対応するのが難しくなります。
configureを使えば、アプリがインストールされる環境を自動的に調べ、その環境に合わせたMakeFileが自動的に作られます。
多くの場合は「configure」という名前がついていますが、別の名前にすることも可能です。
● configureの実行
configureのディレクトリに移動して、
# ./configure |
configureが成功し、makefileが作られたら、makeを実行します。
make コマンドでは、ソースコードをコンパイルし、ロードモジュールを作成します。
configureを実行したディレクトリで、makeを実行します。
# make |
makeが成功したら、ロードモジュールを適切なディレクトリに移動するため、make installを実行します。
# make install |
www.it-shikaku.jp